This invention relates, in general, to recovery techniques for programs executed on position sensitive input/output devices and, in particular, to repositioning an input/output device in order to retry a program.
A requirement of any robust computing environment is to be able to recover from errors, such as device hardware errors (e.g., mechanical, electrical) or recording media errors. In order to recover from some device or media errors, it is necessary to restart a program, either from the beginning or from some other point within the program. The restarting of a program, however, poses certain challenges, especially when the input/output device in which the program is executed is position sensitive.
Conventionally, with position sensitive devices, such as magnetic tape units, the position of the device when the programming error occurred is needed in order to restart the program. This position, however, is difficult to determine for some programs.
For example, when an error is encountered in a channel program that allows pipelining, it is difficult to know where the device was positioned when the error occurred. A channel program includes one or more channel command words. Some channel programs that have a plurality of channel command words allow pipelining of those channel command words. This means that a number of the channel command words may be initiated prior to receiving a response for any one of the command words. Thus, if an error has been detected for a second channel command word, as one example, but the control unit is already processing the fifth channel command word, then the device is positioned past the error and the position within the device of where the error occurred is unknown.
Thus, a need exists for a capability that enables an input/output device to be repositioned, even when the position of the input/output device when the error occurred is unknown. Further, a need exists for a capability that enables an input/output device to be repositioned without any knowledge of current positioning within the device. A further need exists for an enhanced capability that enables programs to be restarted, even when the program has been modified or the last known block-id representing the position of the input/output device is invalid.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a system of repositioning within an input/output device. The system includes, for instance, means for ascertaining that a program, that was executing on an input/output device sensitive to positioning, is to be retried; and means for repositioning the input/output device to a predetermined position in order to retry the program. The means for repositioning lacks knowledge of current positioning within the input/output device.
In one embodiment of the present invention, the system further includes means for determining the predetermined position. In one example, the means for determining includes means for scanning a previously executed program for a command; means for adjusting a position identifier of the input/output device based upon a type of the command; and means for repeating the scanning and the adjusting until a prespecified limit is reached. The position identifier then represents the predetermined position.
In a further embodiment of the present invention, the means for adjusting includes means for incrementing the position identifier when the command is an Add type; means for decrementing the position. identifier when the command is a Delete type; and means for invalidating the position identifier when the command is in Invalidate type.
In a further embodiment of the present invention, the program is a channel program including one or more channel command words, and the means for repositioning lacks knowledge of which channel command word of the channel program failed.
In a further aspect of the present invention, a system of repositioning within an input/output device is provided. The system includes, for example, means for determining a position, within an input/output device sensitive to positioning, that is to be used to retry a program; and means for repositioning the input/output device to the position in order to retry the program. The means for determining uses a first address representative of where a channel associated with the input/output device stopped processing the program and a second address representative of where a control unit associated with the input/output device stopped processing the program.
In another aspect of the present invention, a system of repositioning within an input/output device is provided. The system includes, for example, a processor adapted to reposition an input/output device, sensitive to positioning, to a predetermined position in order to retry a program. The processor is adapted to perform the repositioning without knowledge of current positioning within the input/output device.
In accordance with the principles of the present invention, a repositioning capability is provided that enables an input/output device to be repositioned without knowing the current position of the device or where an error occurred within the device. The repositioning capability of the present invention allows for enhanced error recovery on various interface types (e.g., parallel Original Equipment Manufacturers"" Information (OEMI), Enterprise Systems Connection Architecture (ESCON), Fiber Connection (FICON) and internal tape) for various input/output errors. The capabilities of the present invention allow the operating system to improve the reliability of input/output devices on errors where the ending channel command word cannot even be determined and which previously had to be treated as a permanent error (e.g., interface control check or channel control check with an invalid CCW address). Further, the repositioning capability of the present invention is applicable to any device where the software depends on media positioning to be able to recover from errors.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.